package il.ac.biu.cs.grossmm.api.server;

/**
 * Wraps user objects (components and services) and contains any additional
 * information about the object the framework might need
 * 
 */
public interface Wrapped {
	/**
	 * Gets the wrapped object
	 * 
	 * @return the wrapped object
	 */
	Object getObject();

	/**
	 * Gets the loader used to load server objects for the wrapped object
	 * 
	 * @return the loader used to load server objects for the wrapped object
	 */
	Loader getLoader();

	/**
	 * Sets the loader used to load server objects for the wrapped object.
	 * Should normally be called from a loader which has loaded the wrapped
	 * object (directly or indirectly)
	 * 
	 * @param loader
	 *            the loader used to load server objects for the wrapped object
	 */
	void setLoader(Loader loader);
}
